#ifndef _OBSTACLE_AVOIDANCE_SONAR_H
#define _OBSTACLE_AVOIDANCE_SONAR_H

#include <math.h>
#include <stdint.h>
#include <mg_typedef.h>
typedef struct _SonarControlCommand {
  /**
   * @brief UDP 接收端 IP 地址，4 字节长度数组；（接收端 IP 地址
   * UDP 接收端IP 地址
   * 设置
   * Quint32
   * 固定）
   * 该指令用来告知声纳系统发送 UDP 数据包的 IP 地址；
   */
  uint32_t recv_ip_;
  uint16_t recv_port_;
  /*0：默认，1：岸上自检，2：水下自检*/
  uint8_t is_self_diag_;
  /*0：陆地模式，1：水平探测模式。*/
  uint8_t work_mode_;
  /*0：开始工作，1：停止工作，声纳会变为待机状态；默认发1*/
  uint8_t is_stop_;
  /**
   * @brief 单位米，32位浮点。
   * 若该数值大于声纳的最大探测距离，声纳将自动调整至边界值，不会返回错误信息。0-300m可调。
   *
   */
  float_t measuring_range_;
  /**
   * @brief 发射垂直开角
   * 0/（5°/25°）档位可调节(0档、1档分别对应最小和最大发射开角)
   */
  uint8_t launch_vertical_opening_angle_;
  /**
   * @brief 水平阵波束数
   *
   */
  uint16_t number_of_horizontal_array_beams_;

  float_t  reserved_1_;
  uint8_t  reserved_2_;
  uint16_t reserved_3_;
  /**
   * @brief 发射功率
   * 设置为档位1/2/3(1低功耗、2中、3高)
   */
  uint8_t emission_power_;
  /**
   * @brief 发射脉宽
   * 设置为档位0/1/2/3/4，单频0.03ms、0.1 ms、0.2 ms；调频1 ms、2 ms、5 ms。
   *
   */
  uint8_t emission_pulse_width_;
  /*信号模式*/
  uint8_t  cw_or_chirp_;
  float_t  velocity_of_sound_;
  uint16_t tvg_advanced_settings_;
  uint8_t  brightness_;
  uint8_t  contrast_ratio_;
  struct timestamp_i {
    uint16_t year_;
    uint8_t  month_;
    uint8_t  day_;
    uint8_t  hour_;
    uint8_t  minute_;
    uint8_t  second_;
    uint16_t mills_second_;
  } time_service_;
  /*0：默认，1：信号域数据，2：波束域数据 */
  uint8_t data_type_;
  /**0：不加权，1:25dB，2:30dB */
  uint8_t Chebyshev_weighting_;
  uint8_t A_expansion_coefficient_;
  /*0：默认，1：不一致，2：一致 */
  uint8_t amplitude_phase_consistency_;
  /*0：默认，1：正调频，2：负调频*/
  uint8_t signal_frequency_modulation_form_;
} SonarControlCommand;

typedef struct __SonarStatusCommand {
  uint32_t sent_ip_;
  uint16_t sent_port_;
  /*0：声纳开机就绪报文，1：控制指令确认报文*/
  uint8_t package_type_;
  /*0：陆地模式，1：水平探测模式。*/
  uint8_t work_mode_;

  /*正常：00000000，接收信号处理模块故障00000001，发射模块故障00000010*/
  uint8_t self_checkout_result_;
  /**
   * @brief 单位米，32位浮点。
   * 若该数值大于声纳的最大探测距离，声纳将自动调整至边界值，不会返回错误信息。0-300m可调。
   *
   */
  float_t measuring_range_;
  /**
   * @brief 发射垂直开角
   * 0/（5°/25°）档位可调节(0档、1档分别对应最小和最大发射开角)
   */
  uint8_t launch_vertical_opening_angle_;
  /**
   * @brief 水平阵波束数
   *
   */
  uint16_t number_of_horizontal_array_beams_;

  float_t  reserved_1_;
  uint8_t  reserved_2_;
  uint16_t reserved_3_;
  /**
   * @brief 发射功率
   * 设置为档位1/2/3(1低功耗、2中、3高)
   */
  uint8_t emission_power_;
  /**
   * @brief 发射脉宽
   * 设置为档位0/1/2/3/4，单频0.03ms、0.1 ms、0.2 ms；调频1 ms、2 ms、5 ms。
   *
   */
  uint8_t emission_pulse_width_;
  /*信号模式*/
  uint8_t  cw_or_chirp_;
  float_t  velocity_of_sound_;
  uint16_t tvg_advanced_settings_;
  uint8_t  brightness_;
  uint8_t  contrast_ratio_;
  /*0：默认，1：信号域数据，2：波束域数据 */
  uint8_t data_type_;
  /**0：不加权，1:25dB，2:30dB */
  uint8_t Chebyshev_weighting_;
  uint8_t A_expansion_coefficient_;
  /*0：默认，1：不一致，2：一致 */
  uint8_t amplitude_phase_consistency_;
  /*0：默认，1：正调频，2：负调频*/
  uint8_t signal_frequency_modulation_form_;
} SonarStatusCommand;
#endif
